package laborum2011.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


import laborum2011.dao.BaseDAO;
import laborum2011.excepcion.DAOExcepcion;
import laborum2011.modelo.Loguin;
import laborum2011.util.ConexionBD;

public class LoguinDAO extends BaseDAO{
	
		public Loguin autenticar(String usuario, String password) throws DAOExcepcion {
			System.out.println("LoguinDAO: autenticar(String usuario, String Password)");
			Loguin aut = new Loguin();
			Connection con = null;
			PreparedStatement stmt = null;
			ResultSet rs = null;
			try {
				String query = "select usuario, password, tipo from loguin where usuario =? and password = ? ";
				con = ConexionBD.obtenerConexion();
				stmt = con.prepareStatement(query);
				stmt.setString(1, usuario);  
				stmt.setString(2, password);
				rs = stmt.executeQuery();
				if (rs.next()) {
					aut.setUsuario(rs.getString(1));
					aut.setTipo(rs.getString(2));
				}
			} catch (SQLException e) {
				System.err.println(e.getMessage());
				throw new DAOExcepcion(e.getMessage());
			} finally {
				this.cerrarResultSet(rs);
				this.cerrarStatement(stmt);
				this.cerrarConexion(con);
			}
			return aut;
		}
	
	
		public void insertar(Loguin vo) throws DAOExcepcion {
			System.out.println("LoguinDAO: insertar(Loguin vo)");
			String query = "INSERT INTO loguin (usuario, password, tipo) VALUES (?,?,?)";
			Connection con = null;
			PreparedStatement stmt = null;
			try {
				con = ConexionBD.obtenerConexion();
				stmt = con.prepareStatement(query);
				stmt.setString(1, vo.getUsuario());
				stmt.setString(2, vo.getPassword());
				stmt.setString(3, vo.getTipo());
				
				int i = stmt.executeUpdate();
				if (i != 1) {
					throw new SQLException("No se pudo insertar");
				}
			} catch (SQLException e) {
				System.err.println(e.getMessage());
				throw new DAOExcepcion(e.getMessage());
			} finally {
				this.cerrarStatement(stmt);
				this.cerrarConexion(con);
			}
		}
		
		
		
	
		public Loguin obtener(String usuario) throws DAOExcepcion {
			System.out.println("LoguinDAO: obtener(String usuario)");
			Loguin vo = new Loguin();
			Connection con = null;
			PreparedStatement stmt = null;
			ResultSet rs = null;
			try {
				String query = "select id_usuario, usuario, password, tipo from loguin where usuario = ?";
				con = ConexionBD.obtenerConexion();
				stmt = con.prepareStatement(query);
				stmt.setString(1, usuario);
				rs = stmt.executeQuery();
 			if (rs.next()) {
 					vo.setId_usuario(rs.getInt(1));
 					vo.setUsuario(rs.getString(2));
					vo.setPassword(rs.getString(3));
				}
			} catch (SQLException e) {
				System.err.println(e.getMessage());
				throw new DAOExcepcion(e.getMessage());
			} finally {
				this.cerrarResultSet(rs);
				this.cerrarStatement(stmt);
				this.cerrarConexion(con);
			}
			return vo;
		}

		
		public Loguin listarXId(String user) throws DAOExcepcion {
			System.out.println("LoguinDAO: listar()");
			
			Connection con = null;
			PreparedStatement stmt = null;
			ResultSet rs = null;
			Loguin vo = new Loguin();
			try {
			
				String query = "SELECT id_usuario, usuario, password, tipo FROM loguin where usuario = ?";
				
				con = ConexionBD.obtenerConexion();
				stmt = con.prepareStatement(query);
				stmt.setString(1, user);
			
				rs = stmt.executeQuery();
			
				while (rs.next()) {
					vo.setId_usuario(rs.getInt("id_usuario"));
					vo.setUsuario(rs.getString("usuario"));
					vo.setPassword(rs.getString("password"));
					vo.setTipo(rs.getString("tipo"));
					
					
				}
			} catch (SQLException e) {
				System.err.println(e.getMessage());
				throw new DAOExcepcion(e.getMessage());
			} finally {
				this.cerrarStatement(stmt);
				this.cerrarConexion(con);
			}
			System.out.println("Loguin1 "+ vo.getId_usuario());
			return vo;
		}			
		
		

}
